// PART OF THE MACHINE SIMULATION. DO NOT CHANGE.

package nachos.machine;

/**
 * 允许用户创建、打开和删除文件的文件系统
 */
public interface FileSystem {
    /**
     * 原子地打开文件，如果文件不存在，可以选择创建它
     * 如果文件不存在并且 create 为 false ，则返回 null
     * 如果文件不存在但是 create 为 true，则创建长度为零的文件
     * 如果文件已存在，则打开该文件而不进行任何更改
     *
     * @param name   要打开的文件的名称
     * @param create true 如果文件不存在，则创建该文件
     * @return 表示已打开文件的新实例的 OpenFile，如果无法打开该文件，则为 null
     */
    public OpenFile open(String name, boolean create);

    /**
     * 原子地移除存在的文件
     * 删除文件后，只有使用 open 再次创建文件后，才能打开该文件
     * 如果文件已经打开，则交给接口的实现类来决定该文件是可以继续访问还是立即删除
     *
     * @param name 要删除的文件的名称
     * @return true 如果文件已成功删除
     */
    public boolean remove(String name);
}
